﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using DECOR.BL.BE;
using System.Collections.Generic;
using DECOR.BL.BC;
using Newtonsoft.Json;

namespace DECOR.Touchapp
{
    public partial class buscarReclamos : System.Web.UI.Page
    {
        string pRetval = "";
        string Json = "";

        string pNumeroReclamo = ""; //parametro que se envia desde sencha
        string pNumeroPedido = ""; //parametro que se envia desde sencha
        string pCodigoCliente = ""; //parametro que se envia desde sencha
        string pNombreCliente = ""; //parametro que se envia desde sencha
        string pMaterial = ""; //parametro que se envia desde sencha
        string pFechaCreacionI = ""; //parametro que se envia desde sencha
        string pFechaCreacionF = ""; //parametro que se envia desde sencha
        string pFechaInicioContactoI = ""; //parametro que se envia desde sencha
        string pFechaInicioContactoF = ""; //parametro que se envia desde sencha
        string pFechaFinContactoI = ""; //parametro que se envia desde sencha
        string pFechaFinContactoF = ""; //parametro que se envia desde sencha
        string pEstado = ""; //parametro que se envia desde sencha
        string pUsuario = ""; //parametro que se envia desde sencha
        CombosReclamoBE combos = new CombosReclamoBE();
        List<GenericBE> lst = new List<GenericBE>();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Request.HttpMethod.Equals("POST"))
            {
                
            }
            else
            {
                CredencialesController.cargarInfo(Request.Params); //(SIEMPRE)
                pRetval = "{\"success\": {0}, \"errors\":{\"reason\": \"{1}\"}, ";
                pRetval += "\"listStatus\": {2}, \"listaReclamos\": {3} ";
                pRetval += "}";

                pNumeroReclamo = Request.Params["pNumeroReclamo"] != null ? Request.Params["pNumeroReclamo"] : "";
                pNumeroPedido = Request.Params["pNumeroPedido"] != null ? Request.Params["pNumeroPedido"] : "";
                pCodigoCliente = Request.Params["pCodigoCliente"] != null ? Request.Params["pCodigoCliente"] : "";
                pNombreCliente = Request.Params["pNombreCliente"] != null ? Request.Params["pNombreCliente"] : "";
                pMaterial = Request.Params["pMaterial"] != null ? Request.Params["pMaterial"] : "";
                pFechaCreacionI = Request.Params["pFechaCreacionI"] != null ? Request.Params["pFechaCreacionI"] : "";
                pFechaCreacionF = Request.Params["pFechaCreacionF"] != null ? Request.Params["pFechaCreacionF"] : "";
                pFechaInicioContactoI = Request.Params["pFechaInicioContactoI"] != null ? Request.Params["pFechaInicioContactoI"] : "";
                pFechaInicioContactoF = Request.Params["pFechaInicioContactoF"] != null ? Request.Params["pFechaInicioContactoF"] : "";
                pFechaFinContactoI = Request.Params["pFechaFinContactoI"] != null ? Request.Params["pFechaFinContactoI"] : "";
                pFechaFinContactoF = Request.Params["pFechaFinContactoF"] != null ? Request.Params["pFechaFinContactoF"] : "";
                pEstado = Request.Params["pEstado"] != null ? Request.Params["pEstado"] : "";
                pUsuario = Request.Params["pUsuario"] != null ? Request.Params["pUsuario"] : "";

                DateTime f1 = Convert.ToDateTime(pFechaCreacionI.Substring(0, 10));
                DateTime f2 = Convert.ToDateTime(pFechaCreacionF.Substring(0, 10));
                DateTime f3 = pFechaInicioContactoI.Equals("") ? DateTime.Parse("01/01/1900") : Convert.ToDateTime(pFechaInicioContactoI.Substring(0, 10));
                DateTime f4 = pFechaInicioContactoF.Equals("") ? DateTime.Parse("01/01/1900") : Convert.ToDateTime(pFechaInicioContactoF.Substring(0, 10));
                DateTime f5 = pFechaFinContactoI.Equals("") ? DateTime.Parse("01/01/1900") : Convert.ToDateTime(pFechaFinContactoI.Substring(0, 10));
                DateTime f6 = pFechaFinContactoF.Equals("") ? DateTime.Parse("01/01/1900") : Convert.ToDateTime(pFechaFinContactoF.Substring(0, 10));

                cargaCombos();

                string descripcionEstado = lst.Find(z => z.Codigo == pEstado).Descripcion;
                descripcionEstado = descripcionEstado.Substring(descripcionEstado.IndexOf(":") + 2, descripcionEstado.Length - (descripcionEstado.IndexOf(":") + 2));
                buscaReclamos(pNumeroReclamo, pNumeroPedido, pCodigoCliente, pNombreCliente,
                                    pMaterial, f1, f2, pUsuario, f3, f4, f5, f6, descripcionEstado);
                

                Response.ContentType = "application/json; charset=UTF-8";
                Response.Write(pRetval);
            }
        }

        private void buscaReclamos(string P_NREC, string P_PEDV, string P_KUNNR, string P_NCLIE, string P_MATNR, DateTime P_FECINI
                                , DateTime P_FECFIN, string P_USUARIO, DateTime P_FECINI_CON_I, DateTime P_FECINI_CON_F,
                                  DateTime P_FECFIN_CON_I, DateTime P_FECFIN_CON_F, string estado)
        {
            List<ReporteReclamoBE> lst_ReporteReclamo = null;
            lst_ReporteReclamo = ReclamoBC.Instance.getReporteReclamo(P_NREC, P_PEDV, P_KUNNR, P_NCLIE, P_MATNR, P_FECINI
                                                , P_FECFIN, P_USUARIO.ToUpper(), P_FECINI_CON_I, P_FECINI_CON_F,
                                                   P_FECFIN_CON_I, P_FECFIN_CON_F, estado);

            if (lst_ReporteReclamo != null && lst_ReporteReclamo.Count >= 1)
            {
                pRetval = pRetval.Replace("{0}", "true");
                pRetval = pRetval.Replace("{1}", "");
                Json = JsonConvert.SerializeObject(lst_ReporteReclamo);
                pRetval = pRetval.Replace("{3}", Json);    
            }
            else
            {
                pRetval = pRetval.Replace("{0}", "false");
                pRetval = pRetval.Replace("{1}", "No existen registros.");
                pRetval = pRetval.Replace("{3}", "null");    
            }
        }

        private void cargaCombos()
        {
            combos = new CombosReclamoBE();
            lst = new List<GenericBE>();
            if (Session["lstStatus"] != null)
                if (lst.Count > 0)
                    lst = (List<GenericBE>)Session["lstStatus"];
                else
                {
                    combos = ReclamoBC.Instance.getCombosReclamo();
                    GenericBE i = new GenericBE();
                    i.Codigo = "-1";
                    i.Descripcion = "";
                    combos.T_STATUS.Add(i);
                    lst = combos.T_STATUS;
                }
            else
            {
                combos = ReclamoBC.Instance.getCombosReclamo();
                GenericBE i = new GenericBE();
                i.Codigo = "-1";
                i.Descripcion = "";
                combos.T_STATUS.Add(i);
                lst = combos.T_STATUS;
            }
            if (lst != null)
            {
                Json = JsonConvert.SerializeObject(lst);
                pRetval = pRetval.Replace("{2}", Json);    
            }
            else
            {
                pRetval = pRetval.Replace("{2}", "null");
            }
        }
    }
}
